package cn.antsing.beanPostProcessor;

import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.stereotype.Component;

/**
 *  ioc容器每新产生一个bean，就执行一次这个类里方法
 *      方法必须要有返回值，否则为null
 *
 *  */
@Component
public class BeanPostProcessor1 implements BeanPostProcessor {
    //构造函数执行后执行此方法,如果有依赖就先把依赖执行完 再执行此方法
    @Override
    public Object postProcessBeforeInitialization(Object o, String s) throws BeansException {
        System.out.println("------------------postProcessBeforeInitialization--"+o.getClass().getName()+"---------------");
        return o;
    }


    //bean 的init（）方法执行后执行此方法
    @Override
    public Object postProcessAfterInitialization(Object o, String s) throws BeansException {
        System.out.println("------------------postProcessAfterInitialization--"+o.getClass().getName()+"---------------");
        if(o.getClass().getName().endsWith("User0")){
            System.out.println("**********************************User0--end***************************************");
        }
        return o;
    }
}
